<?php

class medicionController extends Controller
{
    public function __construct() {
        parent::__construct();
    }
    
    public function index(){
        $where = isset($_POST['orden']) &&  $_POST['orden'] <> 0 ? " Where v_Ordenes.id = ".$_POST['orden'] : "";
        $fechaIni = isset($_POST['fechaIni']) ? $_POST['fechaIni'] : date('Y-m-d');
        $fechaFin = isset($_POST['fechaFin']) ? $_POST['fechaFin'] : date('Y-m-d');
        
        $this->_view->assign('orden',isset($_POST['orden']) ? $_POST['orden'] : 0);
        
        $medicion = $this->loadModel('Mediciones');
        $cliente = $this->loadModel('Clientes');
        $producto = $this->loadModel('Partes');
        
        $medicion->open();
        $cliente->open();
        $producto->open();
        
        $orden = $medicion->getProductos();
        $ordenes = $medicion->getOrdenes($where);
        $lista_orden = "";
        $lista_orden_id = "";
        
        foreach($orden as $ord){
            $lista_orden[] = $ord['no_parte'];
            $lista_orden_id[] = $ord['id'];
        }
        
        //var_dump($ordenes);
        //var_dump($orden);
        
        $clientes = "";
        
        foreach($ordenes as &$orden){
            $IdCliente = array_shift($orden);
            $clientes[$IdCliente]['IdCliente'] = $IdCliente;
            $clientes[$IdCliente]['NombreCliente'] = array_shift($orden);
            
            $IdProducto = array_shift($orden); 
            $clientes[$IdCliente]['Productos'][$IdProducto]['IdProducto'] = $IdProducto; 
            $clientes[$IdCliente]['Productos'][$IdProducto]['Producto'] = array_shift($orden);
            
            $where = "WHERE DATE_FORMAT(v_mediciones.fecha,'%Y-%m-%d') between '$fechaIni' AND '$fechaFin' AND v_mediciones.idFolio = ".$orden['folio'];
            $clientes[$IdCliente]['Productos'][$IdProducto]['ordenes'][$orden['folio']] = $orden;
            
            //var_dump($clientes[$IdCliente]['Productos'][$IdProducto]['ordenes']);

            $partidas = $medicion->getMediciones($where);
            
            foreach($partidas as &$partida){
                $IdFolio = array_shift($partida);
                $IdPartida = array_shift($partida);
                $pieza = array_shift($partida);
                $operacion = array_shift($partida);
                
                $mediciones["$IdFolio-$operacion"]['partidas']["$IdPartida-$pieza"]['IdFolio'] = $IdFolio;
                $mediciones["$IdFolio-$operacion"]['partidas']["$IdPartida-$pieza"]['Operacion'] = $operacion;
                $mediciones["$IdFolio-$operacion"]['partidas']["$IdPartida-$pieza"]['IdPartida'] = $IdPartida;
                $mediciones["$IdFolio-$operacion"]['partidas']["$IdPartida-$pieza"]['Pieza'] = $pieza;
                $mediciones["$IdFolio-$operacion"]['partidas']["$IdPartida-$pieza"]['fecha'] = array_shift($partida);
                $mediciones["$IdFolio-$operacion"]['partidas']["$IdPartida-$pieza"]['nombre'] = array_shift($partida);
                $mediciones["$IdFolio-$operacion"]['partidas']["$IdPartida-$pieza"]['usuario'] = array_shift($partida);
                $mediciones["$IdFolio-$operacion"]['partidas']["$IdPartida-$pieza"]['file'] = array_shift($partida);
                $mediciones["$IdFolio-$operacion"]['partidas']["$IdPartida-$pieza"]['serie'] = array_shift($partida);
                $mediciones["$IdFolio-$operacion"]['partidas']["$IdPartida-$pieza"]['observaciones'] = array_shift($partida);
                
                $mediciones["$IdFolio-$operacion"]['partidas']["$IdPartida-$pieza"]['medidas'][$partida['dimension']] = $partida;
                
                $medidas[$orden['folio']."-".$orden['operacion']] = $medicion->getMedidas($IdProducto,$orden['operacion']);
                
                //var_dump($mediciones["$IdFolio-$operacion"]['partidas']);
            }
        }
        
        //exit;

        $this->_view->assign('fechaIni',$fechaIni);
        $this->_view->assign('fechaFin',$fechaFin);
        $this->_view->assign('clientes',$clientes);
        $this->_view->assign('mediciones',$mediciones);
        $this->_view->assign('medidas',$medidas);
        $this->_view->assign('lista_ordenes',$lista_orden);
        $this->_view->assign('lista_ordenes_id',$lista_orden_id);
        $this->_view->renderizar('index','captura');
    }
    
    public function orden($tipo,$id=''){
        $partes = $this->loadModel('Partes');
        $partes->open();
        $partes = $partes->_list();
        $orden = $this->loadModel('Mediciones');
        
        if($id != ''){
            $orden->get('folio',$id);
            $this->_view->assign('datos',$orden->_data);
        }
        
        foreach($partes as $parte){
            $ids[] = $parte['id'];
            $descrip[] = $parte['no_parte'];
        }
        
        if(isset($_POST['agregar'])){
            unset($_POST['agregar']);
            
            $_POST['fecha'] = date('Y-m-d');
            
            
            if(!$orden->insert($_POST)){
                $this->_view->assign('_error',"Se Genero un error al momento de guardar la informacion");
            }
            $this->redireccionar('calidad/medicion');
        }
        
        if(isset($_POST['editar'])){
            unset($_POST['editar']);
            
            if(!$orden->update($_POST, "folio = $id")){
                $this->_view->assign('_error',"Se Genero un error al momento de guardar la informacion");
            }
            $this->redireccionar('calidad/medicion');
        }

        $this->_view->assign('tipo',$tipo);
        $this->_view->assign('select',array($ids,$descrip));
        $this->_view->renderizar('orden','captura');
    }
    
    public function verificacion($tipo,$folio){
        if(isset($_POST['guardar'])){
            $medidas = $this->loadModel('Medidas');
            
            if(isset($_FILES['archivo_medida'])){
                $partida = $this->loadModel('Partidas');
                $partida->open();
                $nombreFile = $_FILES['archivo_medida']['name'];
                $rutaFile = ROOT . "public" . DS . "files" . DS . "calidad" . DS . $_FILES['archivo_medida']['name'];
                
                $partida->get('id',$_POST['parMedicion']);
                if(move_uploaded_file($_FILES['archivo_medida']['tmp_name'],$rutaFile)){
                    $partida->_file = $nombreFile;
                    $res = $partida->update($partida->_data," id = " . $partida->_id);
                }
                echo $nombreFile;
            }
            foreach($_POST['medida'] as $pieza => $dat){
                foreach($_POST['medidas'] as $med){
                    $val = 0;
                    if(isset($dat[$med])){
                        $val = $dat[$med] == 'on' ? 1 : $dat[$med];
                    }
                    $datos =array(
                        'parMedicion' => $_POST['parMedicion'],
                        'dimension' => $med,
                        'pieza' => $pieza,
                        'medida' => $val,
                    );
                    $medidas->insert($datos);
                }
            }
            $this->redireccionar('calidad/medicion');
        }
        
        $muestreo = $this->loadModel('Muestreo');
        $muestreo->open();
        $inspecciones = $this->loadModel('Inspecciones');
        $inspecciones->open();
        $partidas = $this->loadModel('Partidas');
        $partidas->open();
        
        if(isset($_POST['agregar'])){
            unset($_POST['agregar']);
            $orden = $this->loadModel('Ordenes');
            if(!$orden->insert($_POST)){
                $this->_view->assign('_error',"Se Genero un error al momento de guardar la informacion");
            }
            $this->redireccionar('calidad/medicion');
        }
        
        if(isset($_POST['editar'])){
            unset($_POST['editar']);
        }
        if($tipo == 'agregar'){
            $this->_view->assign('orden',$folio);
            $this->_view->assign('id','orden');
        }else{
            $this->_view->assign('folio',$folio);
            $this->_view->assign('id','folio');
        }
        
        
        $this->_view->assign('url',BASE_URL . "calidad/medicion/getMediciones/");
        $this->_view->assign('operaciones',$partidas->getOperaciones($folio));
        $this->_view->assign('inspecciones',$inspecciones->_list());
        $this->_view->assign('muestras',$muestreo->_list());
        $this->_view->renderizar('verificacion','captura');
    }
    
    public function getMediciones(){
        $medidas = $this->loadModel('Partidas');
        $medidas->open();
        $final = false;
        
        if(!isset($_POST['datos']['inspeccion'])){
            echo "<h3>No ha seleccionado inspeccion</h3>";
            exit;
        }
        if(!isset($_POST['datos']['operacion'])){
            echo "<h3>No ha seleccionado una operacion</h3>";
            exit;
        }
        
        $partida = $_POST['datos'];
        
        switch($partida['inspeccion']){
            case 1:
                break;
            case 2:
                break;
            case 3:
                if(!isset($_POST['muestreo'])){
                    echo "<h3>AQL no seleccionado</h3>";
                    exit;
                }
                $partida['cantidad'] = $medidas->getAQL($partida['cantidad'],$partida['AQL']);
                $final = true;
                break;
            case 4:
                break;
        }
        unset($partida['AQL']);
        //var_dump($partida);
        $partida['usuario'] = $_SESSION['user'];
        if(!$medidas->insert($partida)){
            echo "<h3>Error al momento de guardar los datos</h3>";
            exit;
        }
        $medidas->get('id',$medidas->lastId());
            
        //var_dump($_POST);
        //var_dump($_SESSION);
        
        $datos = $medidas->getMedidas($medidas->_idFolio,$partida['operacion'],$final);
        //var_dump($medidas);
        //var_dump($datos);
        $this->_view->assign('encabezado',$medidas->_data);
        $this->_view->assign('datos',$datos);
        $this->_view->renderizar_JQ('mediciones');
    }
}
?>